In a typical personal computer system, a processor of the system uses a memory controller to access (write to and/or read from) memory. The memory controller receives an access request from the processor and generates appropriate interface (input/output, “I/O”) signals to the appropriate memory chips (e.g., DRAMs) to service the request.
A difficult aspect of working with DRAM or other high-speed memory devices is resolving timing requirements of the DRAM integrated circuits (ICs or “chips”). DRAMs are generally independently clocked and respond to input signals as they occur.
Accordingly, the memory controller must generate interface signals to the DRAM chips with appropriate timing and other interface parameters (e.g., driver impedance). As long as the memory controller applies the appropriate signals in the proper sequence with signal durations and delays between signals that meet specified limits, and with proper drive levels, impedance, etc., the DRAM will generally work acceptably well.
To determine the appropriate interface parameters, a range of DRAM chips is typically characterized by engineers designing the computer system. For example, engineers may experimentally or by simulation determine the appropriate timing and other interface parameters that work acceptably across possible variations caused by “process corners” (manufacturing variations across a number of DRAM and memory controller chips), voltage and/or temperature variations during operation, and the like.
To generate the appropriate timing and other interface parameters during system operation, the memory controller typically includes one or more system configuration registers. The system configuration registers store digital values for the interface settings to be used to access the particular DRAM ICs in the system. For example, the system configuration registers store interface parameters such as setup/hold timing, and so on.
Typically, the system configuration registers in the memory controller are configured at initialization of the computer system after hardware reset, e.g. from values stored in a boot ROM. The system configuration registers are usually configured only once upon initialization. Such predetermined timing and other interface parameters ensure that the system should work over the range of voltage and temperature considered during the design of the system.